package monpkg.dao;

import java.util.List;

import monpkg.entities.Admin;
import monpkg.entities.Promotion;
import monpkg.entities.Student;

import org.hibernate.bytecode.buildtime.ExecutionException;

/**
 * @author Yannick Bouchot
 * @author Jonathan Romero
 */


public interface AnnuaireDAO {
	/**
	 * initialisation des interfaces de connexion
	 */
	
	void init();
	/**
	 * fermeture des interfaces de connexion
	 */
	void close();
	/**
	 * ajout d'un nouveau Etudiant
	 */
	
	Student addStudent(Student s);
	/**
	 * récupérer un etudiant en fonction de son iD
	 */

	Student findStudent(long id);
	/**
	 * récupérer la liste de tout les étudiants
	 */

	public List<Student> findAllStudents();
	/**
	 * Mise à jour d'un Etudiant
	 */

	Student updateStudent(Student s);
	/**
	 * 	Suppression d'un etudiant
	 */

	void removeStudent(long id);
	/**
	 * ajout d'un nouveau administrateur
	 */
	
	Admin addAdmin(Admin a);
	/**
	 * récupérer un administrateur en fonction de son iD
	 */

	Admin findAdmin(long id);
	/**
	 * Mise à jour d'un administrateur
	 */

	Admin updateAdmin(Admin a);
    /**
	 * lire une promotion (avec/sans étudiants)
	 */
    
    Promotion findPromotion(long id, boolean withStudents) throws ExecutionException;
    /**
	 * récupérer la liste de toute les promotions
	 */
    
  	public List<Promotion> findAllPromotions();
  	/**
	 * ajout d'une nouvelle promotion
	 */
   
    void addPromotion(Promotion p) throws ExecutionException;
    /**
	 * modification d'une promotion
	 */
  
    void updatePromotion(Promotion p) throws ExecutionException;
    /**
	 * suppression d'une promotion
	 */

    void removePromotion(long id) throws ExecutionException;
    
}